#include "borrarcliente.h"
#include "ui_borrarcliente.h"
#include <QMessageBox>

borrarcliente::borrarcliente(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::borrarcliente)
{
    ui->setupUi(this);
    connect( ui->qpBCancelar, SIGNAL(clicked()), this, SLOT(close()) );
    connect( ui->qpBCancelar, SIGNAL(clicked()), this, SLOT(clearMemmoryAll()) );
    connect( ui->qpBBuscar, SIGNAL(clicked()), this, SLOT(selectedCB()) );

    connect( this, SIGNAL(buscar(int)), this, SLOT(buscaDatosClnt(int)) );

    connect( ui->qpBBorrar, SIGNAL(clicked()), this, SLOT(clearDatosClnt()) );

    //PUNTERO A LA CLASE DE LA CONEXION
    cnnDb = conexionDB::instance();
    dtsCnt = conexionDB::instanceCnts();
    dtsCntShw = conexionDB::instanceDats();
    clearCampsDats( );
}

borrarcliente::~borrarcliente()
{
    delete ui;
}

//FUNCION QUE RECIBE EL PUNTERO A LA CONEXION
//CON LA BASE DE DATOS
void borrarcliente::addPDb( void ){
    loadCbCnt( );
    return;
}

//FUNCION QUE SE ENCARGA DE LLENAR EL COMBOBOX
void borrarcliente::loadCbCnt( void ){
    //PUNTERO A LISTA ENLAZADA QUE ALMACENA LOS NOMBRES
    //DE LOS CONTACTOS
    //REVISAR ESTA FUNCION
    dtsCnt = conexionDB::instanceCnts();
    cnnDb->bDbCntl( "clientes" );
    if( dtsCnt != NULL ){
        addCbDts( &dtsCnt );
        ui->qpBBuscar->setEnabled(true);
    }else{
        ui->qpBBuscar->setEnabled(false);
    }
    return;
}
//FUNCION RECURSIVA QUE SE ENCARGA DE LLENAR EL
//COMBOBOX
void borrarcliente::addCbDts( struct datosCnt **list ){
    if( list != NULL ){
        ui->cBBC->addItem( (*list)->name + " " + (*list)->apellidos );
        if( (*list)->next != NULL ){
            addCbDts( &((*list)->next) );
        }
    }
    return;
}

//FUNCION QUE SE ENCARGA DE LIMPIAR LOS CAMPOS
//QUE MUESTRAN LOS DATOS DEL CLIENTE
void borrarcliente::clearCampsDats( void ){
    ui->lENombre->setText("Nombre");
    ui->lEApellidos->setText( "Apellidos" );
    ui->lEEdad->setText( "Edad" );
    ui->lESexo->setText( "Sexo" );
    ui->lECelular->setText( "Celular" );
    ui->lETelefono->setText( "Telefono" );
    ui->lEEmail->setText( "Email" );
    ui->lE2Email->setText( "Email2" );
    ui->lETwitter->setText( "" );
    ui->lEWeb->setText( "Web" );
    ui->lEFacebook->setText( "Facebook" );
    ui->lEId->setText( "ID" );

    ui->lETel->setText( "Telefono" );
    ui->lEext->setText( "Extención" );
    ui->lEFax->setText( "Fax" );

    ui->lEFRegistro->setText("Fecha de registro");
    ui->tENota->setText( "Nota sobre el contacto" );
    ui->lblImagen->setText("Imagen del contacto");
    ui->qpBBorrar->setEnabled(false);
    ui->tEDireccion->setText("Dirección");

    //REGRESA AL COLOR ORIGINAL
    QPalette *palette = new QPalette();
    palette->setColor(QPalette::Text,Qt::gray);
    //SE LE ASIGNA EL COLOR A TODOS LO LINES EDIT
    ui->lENombre->setPalette(*palette);
    ui->lEApellidos->setPalette(*palette);
    ui->lEEdad->setPalette(*palette);
    ui->lESexo->setPalette(*palette);
    ui->lECelular->setPalette(*palette);
    ui->lEEmail->setPalette(*palette);
    ui->lEId->setPalette(*palette);

    //ui->lETelefono->setPalette(*palette);
    ui->lETelefono->setPalette(*palette);
    ui->lE2Email->setPalette(*palette);
    ui->lETwitter->setPalette(*palette);
    ui->lEWeb->setPalette(*palette);
    ui->lEFacebook->setPalette(*palette);

    ui->tEDireccion->setPalette(*palette);
    ui->lETel->setPalette(*palette);
    ui->lEext->setPalette(*palette);
    ui->lEFax->setPalette(*palette);

    ui->tENota->setPalette(*palette);

    ui->qpBBorrar->setEnabled( false );

    //cnnDb->clearCntl( );

    return;
}

//SLOT PARA COMENZAR A LIBERAR MEMORIA UTILIZADA
void borrarcliente::clearMemmoryAll( void ){
    cnnDb->clearCntl( );
    ui->cBBC->clear();
    clearCampsDats( );
    return;
}
//SLOT QUE SE CONECTA CON EL CIERRE DE LA VENTANA
//Y SE ENCARGA DE LIBERAR MEMORIA
void borrarcliente::clearMDts( void ){
    return;
}

//SLOT PARA SABER QUE ITEM SE HA SELECCIONADO
//DEL COMBOBOX Y MOSTRAR SUS DATOS
void borrarcliente::selectedCB( void ){
    int seleccion;
    //OBTIENE EL NUMERO DE LA SELECCION A BUSCAR
    if( ui->cBBC->currentText() == "" ){
    }else{
        seleccion = ui->cBBC->currentIndex();
        seleccion += 1;
        //AQUI EMITE LA SEÑAL QUE INDICA QUE HAY QUE MOSTRAR
        //LOS DATOS DEL USUARIO SELECCIONADO
        emit buscar( seleccion );
    }
    return;
}

//SLOT QUE ES PARA BUSCAR LOS DATOS DEL CONTACTO SELECCIONADO
void borrarcliente::buscaDatosClnt( int seleccion ){

    datsC* aux = new datsC;
    aux = brwDtsClnt( aux, &dtsCnt, seleccion );
    QPalette *palette = new QPalette();
    palette->setColor(QPalette::Text,Qt::blue);

    cnnDb->showDatsCntl( aux->name, aux->apellidos, "clientes" );
    ui->lENombre->setText( dtsCntShw->nombre );
    ui->lEApellidos->setText( dtsCntShw->apellidos );
    ui->lEEdad->setText( dtsCntShw->edad );
    ui->lESexo->setText( dtsCntShw->sexo );
    ui->lECelular->setText( dtsCntShw->celular );
    ui->lETelefono->setText( dtsCntShw->telefono );
    ui->lEEmail->setText( dtsCntShw->email );
    ui->lE2Email->setText( dtsCntShw->emailt );
    ui->lETwitter->setText( dtsCntShw->twitter );
    ui->lEWeb->setText( dtsCntShw->web );
    ui->lEFacebook->setText( dtsCntShw->facebook );
    ui->lEId->setText( dtsCntShw->id );
    ui->tENota->setText( dtsCntShw->nota );
    ui->lEFRegistro->setText( dtsCntShw->fechareg );
    ui->lblImagen->setPixmap( "img/clnts/"+ui->lEEmail->text()+".jpeg" );

    ui->tEDireccion->setText( dtsCntShw->direccion );
    ui->lETel->setText( dtsCntShw->telefonot );
    ui->lEext->setText( dtsCntShw->extencion );
    ui->lEFax->setText( dtsCntShw->fax );


    //SE LE ASIGNA EL COLOR A TODOS LO LINES EDIT
    ui->lENombre->setPalette(*palette);
    ui->lEApellidos->setPalette(*palette);
    ui->lEEdad->setPalette(*palette);
    ui->lESexo->setPalette(*palette);
    ui->lECelular->setPalette(*palette);
    ui->lEEmail->setPalette(*palette);
    ui->lEId->setPalette(*palette);

    ui->lEFRegistro->setPalette(*palette);

    if( ui->lETelefono->text() == "S / N" ){
        palette->setColor(QPalette::Text,Qt::red);
    }else{
        palette->setColor(QPalette::Text,Qt::blue);
    }
    ui->lETelefono->setPalette(*palette);
    if( ui->tEDireccion->toPlainText() == "No se ha especificado direccion alguna" ){
        palette->setColor(QPalette::Text,Qt::red);
    }else{
        palette->setColor(QPalette::Text,Qt::blue);
    }
    ui->tEDireccion->setPalette(*palette);
    if( ui->lETel->text() == "S / N" ){
        palette->setColor(QPalette::Text,Qt::red);
    }else{
        palette->setColor(QPalette::Text,Qt::blue);
    }
    ui->lETel->setPalette(*palette);
    if( ui->lEext->text() == "S / N" ){
        palette->setColor(QPalette::Text,Qt::red);
    }else{
        palette->setColor(QPalette::Text,Qt::blue);
    }
    ui->lEext->setPalette(*palette);
    if( ui->lEFax->text() == "S / N" ){
        palette->setColor(QPalette::Text,Qt::red);
    }else{
        palette->setColor(QPalette::Text,Qt::blue);
    }
    ui->lEFax->setPalette(*palette);

    palette->setColor(QPalette::Text,Qt::blue);
    if( ui->lE2Email->text() == "No se ha especificado" ){
        palette->setColor(QPalette::Text,Qt::red);
    }else{
        palette->setColor(QPalette::Text,Qt::blue);
    }
    ui->lE2Email->setPalette(*palette);
    if( ui->lETwitter->text() == "No se ha especificado" ){
        palette->setColor(QPalette::Text,Qt::red);
    }else{
        palette->setColor(QPalette::Text,Qt::blue);
    }
    ui->lETwitter->setPalette(*palette);
    if( ui->lEWeb->text() == "No se ha especificado" ){
        palette->setColor(QPalette::Text,Qt::red);
    }else{
        palette->setColor(QPalette::Text,Qt::blue);
    }
    ui->lEWeb->setPalette(*palette);
    if( ui->lEFacebook->text() == "No se ha especificado" ){
        palette->setColor(QPalette::Text,Qt::red);
    }else{
        palette->setColor(QPalette::Text,Qt::blue);
    }
    ui->lEFacebook->setPalette(*palette);
    if( ui->tENota->toPlainText() == "No se ha especificado nota alguna" ){
        palette->setColor(QPalette::Text,Qt::red);
    }else{
        palette->setColor(QPalette::Text,Qt::blue);
    }
    ui->tENota->setPalette(*palette);

    ui->qpBBorrar->setEnabled( true );


    cnnDb->clearDtsAll( );

    if( aux != NULL ){
        delete aux;
    }
    return;
}
//FUNCION QUE RETORNA EL NOMBRE Y APELLIDOS A BUSCAR
datsC *borrarcliente::brwDtsClnt(datsC *dats, datosCnt **list, int sel ){
    static int aux = 1;
    if( (*list) != NULL ){
        if( aux == sel ){
            dats->name.append( (*list)->name );
            dats->apellidos.append( (*list)->apellidos );
            aux = 1;
            return dats;
        }else{
            aux +=1;
            brwDtsClnt( dats, &((*list)->next), sel );
        }
    }
    return dats;
}

//SLOT PARA BORRAR LOS DATOS DE UN CLIENTE
void borrarcliente::clearDatosClnt( void ){
    cnnDb->clearDatsCntl( ui->lENombre->text(), ui->lEApellidos->text(), "clientes" );
    QMessageBox::information( this, "Borrado", "Se haborrado al cliente", QMessageBox::Ok );
    ui->cBBC->clear();
    cnnDb->clearDtsAll( );
    cnnDb->clearCntl( );
    clearCampsDats( );
    close();
    return;
}



